阅读更多
一、前言

最近有一个同学,发给我一个设备流量访问检测工具,但是奇怪的是,他从GP上下载下来之后安装就没有数据了,而在GP上直接安装就可以。二次打包也会有问题。所以这里就可以判断这个app应该是有签名校验了,当然还有其他的校验逻辑,我们打开这个app界面如下,没有任何数据:

二、应用分析

下面就来简单分析这个app,不多说直接使用Jadx工具打开:

我们在使用的过程中会发现需要授权VPN权限,所以就断定这个app利用了系统的VPNService功能开发的,直接在xml中找到入口,然后进入查看配置代码:

继续跟踪查看内部逻辑:

在Worker类中,看到有一些核心的Native方法,开发过VPNService都知道,拦截数据等操作一般都会放到native去做,主要原因是性能会高点。不多说直接使用IDA打开libwebd.so文件,直接搜索NativeInit函数,为什么搜索这个函数呢?因为一看这个是初始化操作,而没有数据的话那些校验判断只会在这里,所以直接看这个函数实现:

继续往下看,他到底做了哪些验证,这里主要包括了三处验证,具体如下:

第一处验证:验证安装渠道是否为GP,这里利用了系统的getInstallerPackageName方法来做判断,这个方法在很早的Android版本就有了,但是这个方法有很大使用问题,后面会介绍。因为GP安装器包名是:com.android.vending,这里直接判断如果安装器不是GP就不进行拦包操作了。

第二处验证:应用签名校验,这个已经是最普遍的校验方法了,这里不多解释了,直接使用kstools工具进行爆破即可破解签名校验。

第三处验证:这个主要验证xml中的android:debuggable=”true”这个属性值,我们之前如果想调试这个app的话,一般都会手动反编译改这个属性为true的。但是我们现在不需要调试,也没必要进行修改。这个验证对于我们来说没什么影响。

看到上面的三处验证,其实对于我们现在掌握的技术来说,都不难,特别是签名校验,完全可以使用kstools工具来搞定,一键化操作,不了解kstools工具的同学可以看这篇文章:Android中自动爆破签名校验工具kstools;这里同学自己使用工具操作一下即可过了这个验证。而第三处验证可以说没什么影响,不用管它。主要来看第一处验证。有的同学说破解也简单,直接修改CBZ指令即可。但是这个就缺失了一些技巧,我们要的不是结果,而是学习的过程。接下来看看我是怎么破解这个校验的。又要多介绍一些知识点了。

三、破解方案

破解这个安装渠道大致有两个方案,一个是利用kstools工具源码修改一下,拦截getInstallerPackageName方法,然后修改返回值即可,如下:

直接返回这个包名的的安装器就是GP的,这样在打包就可以给多人使用了。这个不多介绍了,感兴趣的同学去下载源码自己操作实践一下即可:https://github.com/fourbrother/kstools

还有一种超级简单的方式,直接使用命令 pm install -i[指定安装器包名] apk文件,这个命令应该又很少人知道,但是这个简单的一个命令就可以在这里很方便的破解,可以指定一个app的安装器。

我们安装之后,可以在系统的 /data/system/packages.xml 中查看应用对应的安装器名称:

而这里又说道一个知识,就是系统的这个packages.xml文件,他就是设备安装成功的应用的一些详细信息,包括使用到的权限,签名信息,安装渠道,各种标志等。之前有人问怎么获取设备中的应用安装渠道来源,其实可以从这个文件中获取到。从这里看到这个应用现在的确是从GP上安装的了,也说明了上面的那个pm命令的确有效。

这时候我们再看看应用的拦截是否有效果了:

看到了,这里开始拦截设备的数据包了,从这里看这款app的确很有用,对于我们开发来说,也算是一个很好的工具了,破解之后可以珍藏使用了。

对于第一种方式破解是最好的,因为那样可以给多个人使用,而对于第二种命令指定安装器的安装方式,一般小白用户肯定不知道。对于第一种方式破解只需要修改kstools源码即可。

四、总结

好了到这里我们就破解成功了,可以愉快的使用这个app了,但是从上面来看了解到了新的防护策略就是判断应用是否来自于指定应用市场。有的同学可能立马想到了,为了防止二次打包,可以在应用中判断是否来自于主流的应用市场渠道,如果不是就不走正确的逻辑了,这个也算是一个防护策略了,不过可惜的是这个想法是不可行的,如果可行就有很多app早这么干了。原因是因为这个系统方法:getInstallerPackageName,大家可以自己测试这个方法,会发现:如果一个app是系统应用,那么这个返回值可能是设备自带的应用市场。如果一个app是第三方应用,从GP上安装,这个值一定是com.android.vending;而如果是其他渠道,比如国内的应用包,手机助手,豌豆荚等。就有可能是null值,而是用pm这样的命令,或者系统自带的安装器安装的第三方应用也有可能是null值,也就是说:这个系统api返回的应用安装器名称极不稳定,完全就是不靠谱的方法,至少在国内没法使用的。所以几乎可以忽略这个方法的。但是为何这个app敢这么干呢?其实我也很好奇。不过有一点可以说明就是这个app开发商就认定了此app只在GP上发布,其他渠道都不发布,这样只认定GP上下载的app才算是合法的。比如一个国外用户,用了华为手机使用非GP渠道下载了这个app,那么可惜这个人也是不能使用的。我也很好奇这个app的开发商为何要这么做?反正国内的app应该都不会这么做的。因为这个方法的返回值极不稳定。

但是不能说这个方法不靠谱,我们在后面的逆向就要忽略这个防护,后面我们在破解app依然遵从不变法则:全局搜索signature字符串来判断是否有签名校验,全局搜索getInstallerPackageName方法是否有安全渠道验证。不管是在IDA还是Jadx中搜索,都是如此。
  • 大小: 11 KB
  • 大小: 14 KB
  • 大小: 20.3 KB
  • 大小: 50.3 KB
  • 大小: 24.6 KB
  • 大小: 45.3 KB
  • 大小: 18.8 KB
  • 大小: 16.1 KB
  • 大小: 42.6 KB
  • 大小: 8.3 KB
  • 大小: 34.1 KB
  • 大小: 42.4 KB
来自: wjdiankong
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Android逆向之旅---带你解读Android中新型安全防护策略

    一、前言 最近有一个同学,发给我一个设备流量访问检测工具,但是奇怪的是,他从GP上下载下来之后安装就没有数据了,而在GP上直接安装就可以。二次打包也会有问题。...我们在使用的过程中会发现需要...

  • 利用日志管理,溯源追踪解决安全问题

    服务器是IT基础设施的关键,但是网络攻击每天都在发生。IT Governance报告显示,仅在2020年11月就有586,771,602条泄露记录。...而当攻击者绕过安全防线发起攻击时,往往都有行为、进程的足迹可以溯源,有.

  • 人工智能与大数据时代-2019

    文章不断更新中..... 20191013 白皮书丨大数据产业发展呈现八大趋势 《2019中国大数据产业发展白皮书》深度解读之一 《2019中国大数据产业发展白皮书》深度解读之二 《2019中国大数据产业发展白皮书》深度解读...

  • 在互联网上,没有人知道你是一条狗?

    这则漫画中有两只狗:一只黑狗站在电脑椅上,爪子扶着键盘。它望向站在地上、表情迷茫的另一只狗,兴奋地说:「在互联网上,没人知道你是一条狗。 (On the Internet, nobody knows you’re a dog.)画中那只狗的...

  • 谷歌原数据保护团队技术主管:零信任实践分享

    在此背景下开发的Binary Authorization for Borg(BAB) 系统已经在谷歌生产环境中实现了全面覆盖:任何人在生产环境中以任何服务的身份运行任何软件包之前,都必须为目标服务建立一个足够强的BAB安全策略。...

  • wuyun知识库目录

    1269.利用Office宏及Powershell的针对性攻击...1267.Android安全开发之ZIP文件目录遍历2016-06-23 1266.search-guard 在 Elasticsearch 2.3 上的运用2016-06-23 1265.签名加密破除-burp插件在app接口fuzz中的运用201

  • 一些不错的网页

    Ethical Technical Hackers And Leets (Newport Beach, CA) | Meetup 命令执行WAF绕过技巧总结 - FreeBuf互联网安全新媒体平台 Vectra_Cognito_cve_2018_14889_14890_14891.pdf 微信赌场——H5棋牌游戏渗透之旅 - i...

  • 信息技术领域会议(技术领域和非技术领域)

    从机制与策略探究Linux内核设计之道 陈莉君:西安邮电 16 Growing the Android Ecosystem ARM.ppt 钟晓峰– ARM中国战略合作经理 17 PerfEvent与Intel PMU介绍 林铭:Intel开源技术中心 18 ...

  • 安装NumPy教程-详细版

    附件是安装NumPy教程_详细版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

  • 语音端点检测及其在Matlab中的实现.zip

    语音端点检测及其在Matlab中的实现.zip

  • C#文档打印程序Demo

    使用C#完成一般文档的打印,带有页眉,页脚文档打印,表格打印,打印预览等

  • DirectX修复工具-4-194985.zip

    directx修复工具 DirectX修复工具(DirectX repair)是系统DirectX组件修复工具,DirectX修复工具主要是用于检测当前系统的DirectX状态,若发现异常情况就可以马上进行修复,非常快捷,使用效果也非常好。

  • Python手动实现人脸识别算法

    人脸识别的主要算法 其核心算法是 欧式距离算法使用该算法计算两张脸的面部特征差异,一般在0.6 以下都可以被认为是同一张脸 人脸识别的主要步骤 1 获得人脸图片 2 将人脸图片转为128D的矩阵(这个也就是人脸特征的一种数字化表现) 3 保存人脸128D的特征到文件中 4 获取其他人脸转为128D特征通过欧式距离算法与我们保存的特征对比,如果差距在0.6以下就说明两张脸差距比较小

  • 全国大学生信息安全竞赛知识问答-CISCN 题库.zip

    ciscn 全国大学生信息安全竞赛知识问答-CISCN 题库.zip

  • JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译).zip

    JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)

  • strcmp函数应用.zip

    strcmp函数应用.zip

  • 蓝桥杯单片机第十一届国赛设计题试做

    蓝桥杯单片机第十一届国赛设计题试做

  • 基于MATLAB的pca人脸识别.zip

    基于MATLAB的pca人脸识别.zip

Global site tag (gtag.js) - Google Analytics